package com_2;

import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;

public class ReflectDemo3 {//定义反射类的测试类
    public static void main(String[] args) throws Exception {
        //main方法入口并抛出异常
        Properties pre = new Properties();//创建properites集合对象
        FileReader f = new FileReader("Reflect\\class.txt");
        //创建字符输入流对象用以读取配置文件中的内容
        pre.load(f);//将流读取的数据存入到集合中
        f.close();//关闭流资源
        String className = pre.getProperty("className");//通过集合中的键位值获取到类的名称
        String methodName = pre.getProperty("methodName");//键值获取到类中具体的方法名
        Class<?> c = Class.forName(className);//使用Classforname方法获取到类的class文件对象
        Constructor<?> cos = c.getConstructor();//获类中无参数构造方法创建对象相应的对象
        Object o = cos.newInstance();//通过获取的无参构造对象调用newInstance方法创建类的对象
        Method method = c.getMethod(methodName);//通过class文件对象获取单个的公共方法，并将从集合获取的方法名作为方法
        method.invoke(o);//方法对象调用invoke方法调用类中的方法

    }
}
